<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数只执行一次</title>
</head>
<body>
<script>
    // 实现方式一：通过函数
    /*    function execute_once(fn) {
            let once = false;
            return function () {
                if (!once) {
                    fn.apply(this.arguments)
                    once = !once
                }
            }
        }

        function f() {
            console.log("output from f()")
        }

        let once = execute_once(f);
        once()
        once()
        once()*/

    // 实现方法二：通过外部变量

    let once = false;

    function execute_once() {

        if (!once) {
            console.log("output from execute_once()")
            once = !once
        }
    }

    execute_once()
    execute_once()
    execute_once()
    execute_once()

</script>
</body>
</html>